﻿CREATE PROCEDURE [dbo].[Hogar_ParteDiarioPersonal_Insertar]
	@ParteQuincenalPersonalAsXml XML
AS
BEGIN

DECLARE @ParteQuincenalPersonalId INT
DECLARE @Mes INT
DECLARE @Año INT
DECLARE @Quincena INT

BEGIN TRY
    BEGIN TRAN 

		SELECT @Quincena = DatosParteQuincenalPersonal.ParteQuincenalPersonal.query('./Quincena').value('.','INT')
		FROM @ParteQuincenalPersonalAsXml.nodes('/DatosParteQuincenalPersonal/ParteQuincenalPersonal') AS DatosParteQuincenalPersonal(ParteQuincenalPersonal)

		SELECT @Mes = DatosParteQuincenalPersonal.ParteQuincenalPersonal.query('./Mes').value('.','INT')
		FROM @ParteQuincenalPersonalAsXml.nodes('/DatosParteQuincenalPersonal/ParteQuincenalPersonal') AS DatosParteQuincenalPersonal(ParteQuincenalPersonal)

		SELECT @Año = DatosParteQuincenalPersonal.ParteQuincenalPersonal.query('./Año').value('.','INT')
		FROM @ParteQuincenalPersonalAsXml.nodes('/DatosParteQuincenalPersonal/ParteQuincenalPersonal') AS DatosParteQuincenalPersonal(ParteQuincenalPersonal)

	    SELECT @ParteQuincenalPersonalId = [ParteQuincenalPersonalId] 
		FROM [dbo].[ParteQuincenalPersonal] WITH (NOLOCK)
		WHERE [Mes] = @Mes AND [Año] = @Año AND [Quincena] = @Quincena

		IF (@ParteQuincenalPersonalId IS NULL)
		BEGIN
			INSERT INTO [dbo].[ParteQuincenalPersonal]
			([Mes],
			 [Año],
			 [Quincena]
			)
			VALUES (@Mes, @Año, @Quincena)

			SET @ParteQuincenalPersonalId = @@IDENTITY
		END

		INSERT INTO [dbo].[ParteDiarioPersonal]
           ([ParteQuincenalPersonalId]
           ,[AgenteId]
           ,[DiaJustificar]
           ,[PeriodoDesde]
           ,[PeriodoHasta]
           ,[Observaciones]
           ,[CodigoAusentismoId])
        SELECT
			@ParteQuincenalPersonalId,
			DatosParteDiarioPersonal.ParteDiarioPersonal.query('./AgenteId').value('.','INT'),
			CAST(NULLIF(DatosParteDiarioPersonal.ParteDiarioPersonal.query('./DiaJustificar').value('.','DATE'),'') as DATE),
			CAST(NULLIF(DatosParteDiarioPersonal.ParteDiarioPersonal.query('./PeriodoDesde').value('.','DATE'),'') as DATE),
			CAST(NULLIF(DatosParteDiarioPersonal.ParteDiarioPersonal.query('./PeriodoHasta').value('.','DATE'),'') as DATE),
			DatosParteDiarioPersonal.ParteDiarioPersonal.query('./Observaciones').value('.','VARCHAR(250)'),
			DatosParteDiarioPersonal.ParteDiarioPersonal.query('./CodigoAusentismoId').value('.','INT')
        FROM @ParteQuincenalPersonalAsXml.nodes('/DatosParteQuincenalPersonal/DatosParteDiarioPersonal/ParteDiarioPersonal') AS DatosParteDiarioPersonal(ParteDiarioPersonal)

    COMMIT TRAN
END TRY
BEGIN CATCH
	SELECT ERROR_NUMBER() AS Number,
		ERROR_MESSAGE() AS Message
	ROLLBACK TRAN
	
END CATCH
END
